package com.banconacion.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.banconacion.bean.ClienteDTO;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import com.banconacion.service.GestionaClienteService;

/**
 * Este servlet gestionara las operaciones basicas
 * sobre la entidad cliente
 * El servlet pertenece a la capa controladora. Un servlet puede
 * invocar a uno o mas servicios (pertenecientes a la capa model)
 */

public class ClienteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	//creamos una instancia del servicio gestionaClienteService
	GestionaClienteService servicio = new GestionaClienteService();
 
   
	protected void service(HttpServletRequest request, 
			HttpServletResponse response) 
			throws ServletException, IOException {
		
		//asumimos que siempre nos envian un parametro
		//llamado operacion
		//llegan dos parametros
		String voperacion = request.getParameter("operacion");
			
		if(voperacion.equals("listar")){
			
			System.out.println("Dentro de listar");
			this.listar(request, response);
		}
		if(voperacion.equals("eliminar")){
			this.eliminar(request, response);
		}
		if(voperacion.equals("ingresar")){
			this.insertar(request, response);
		}
		if(voperacion.equals("cargaModifica")){
			this.cargarDatos(request, response);
		}
		if (voperacion.equals("modificar")){
			this.modificar(request, response);
		}
				
	}

	private void modificar(HttpServletRequest request,
			HttpServletResponse response) {
		// 1. Recuperamos parametros
		String vnombre = request.getParameter("nombre");
		String vsueldo = request.getParameter("sueldo");
		String vsexo = request.getParameter("sexo");
		String vfecnac = request.getParameter("fecnac");
		String vusuario = request.getParameter("usuario");
		String vclave = request.getParameter("clave");
		String vsalvarusuario = request.getParameter("usuarioSalvado");
		
		ClienteDTO cliente = new ClienteDTO();
		
		ClienteDTO objCli = new ClienteDTO();
		objCli.setNombre(vnombre);
//		objCli.setSueldo(Double.parseDouble(vsueldo));
//		objCli.setSexo(vsexo);
//		SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yy");
//		try {
//			
//			objCli.setFecnac(formateador.parse(vfecnac));
//			
//		} catch (ParseException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		objCli.setUsuario(vusuario);
//		objCli.setClave(vclave);
//		objCli.setSavaUsuario(vsalvarusuario);
		
//		System.out.println("La clave salvada es: "+ objCli.getSavaUsuario());
		
		//2. Invocamos a componente de negocio
		try {
			servicio.modficarCliente(objCli);
			
			List<ClienteDTO> clientes =
				servicio.listaPorNombre("");
			//2.Invocamos a componenetes de la capa de presentacion
			request.setAttribute("li_clientes", clientes);
			//3. invocamos a componentes de la capa view
			request.getRequestDispatcher("/listado.jsp").forward(request, response);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	private void cargarDatos(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub
//		String vusuario = request.getParameter("usuario");
//		ClienteDTO objCliente = new ClienteDTO();
//		objCliente.setUsuario(vusuario);
//		try {
//			objCliente = servicio.buscaClientePorUsuario(objCliente);
//						
//			//invocamos al compenete de la capa view
//			request.setAttribute("b_cliente", objCliente);//cargo en el request la informacion q me devolvieron
//			request.getRequestDispatcher("/modificaCliente.jsp").forward(request, response);
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}	
	}

	private void insertar(HttpServletRequest request,
			HttpServletResponse response) {
		
		// 1. Recuperamos parametros
		String vnombre = request.getParameter("nombre");
		String vsueldo = request.getParameter("sueldo");
		String vsexo = request.getParameter("sexo");
		String vfecnac = request.getParameter("fecnac");
		String vusuario = request.getParameter("usuario");
		String vclave = request.getParameter("clave");
		
		ClienteDTO objCli = new ClienteDTO();
		objCli.setNombre(vnombre);
//		objCli.setSueldo(Double.parseDouble(vsueldo));
//		objCli.setSexo(vsexo);
//		SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yy");
//		try {
//			
//			objCli.setFecnac(formateador.parse(vfecnac));
//			
//		} catch (ParseException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		objCli.setUsuario(vusuario);
//		objCli.setClave(vclave);
//		
		
		//2. Invocamos a componente de negocio
		try {
			servicio.registraCliente(objCli);
									
			List<ClienteDTO> clientes =
				servicio.listaPorNombre("");
			//2.Invocamos a componenetes de la capa de presentacion
			request.setAttribute("li_clientes", clientes);
			//3. invocamos a componentes de la capa view
			request.getRequestDispatcher("/listado.jsp").forward(request, response);
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

	private void eliminar(HttpServletRequest request,
			HttpServletResponse response) {
		
		String vusuario = request.getParameter("usuario");
		ClienteDTO objCliente = new ClienteDTO();
//		objCliente.setUsuario(vusuario);
//		
//		try {
//			servicio.eliminarCliente(objCliente);
//									
//			List<ClienteDTO> clientes =
//				servicio.listaPorNombre("");
//			//2.Invocamos a componenetes de la capa de presentacion
//			request.setAttribute("li_clientes", clientes);
//			//3. invocamos a componentes de la capa view
//			request.getRequestDispatcher("/listado.jsp").forward(request, response);
//			
//			
//			
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		
	}

	private void listar(HttpServletRequest request, HttpServletResponse response) {
		//1. recuperamos parametros
		String vnombre = request.getParameter("nombre");
		
		//2.Invocamos al componente de la logica de negocio
	try {
		List<ClienteDTO> clientes =
							servicio.listaPorNombre(vnombre);
		//3.Invocamos a componenetes de la capa de presentacion
		request.setAttribute("li_clientes", clientes);
		
		request.getRequestDispatcher("/listado.jsp").forward(request, response);
		
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
		
	}

}
